package com.azt.utils;

import com.xiaoleilu.hutool.util.StrUtil;
import org.apache.commons.lang.StringUtils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 自己的String处理工具类
 * @author 张栋  2016年7月22日下午1:16:47
 */
public class MyStringUtils {
	
    /**
     * 去掉换行符与空格
     * @param str
     * @return
     * @author 张栋  2016年7月22日下午1:16:44
     */
   public  static String replaceBlank(String str) {
        String dest = "";
        if (str!=null) {
            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
            Matcher m = p.matcher(str);
            dest = m.replaceAll("");
        }
        return dest;
    }

    /**
     * 数组转字符串
     * @param array
     * @return
     */
    public static String ArrayToString(String[] array){
        if(array != null && array.length > 0){
            StringBuffer str = new StringBuffer();
            for (String s : array) {
                str.append(s + ",");
            }
            return str.substring(0 , str.length() - 1).toString();
        }
        return null;
    }

    /*
    获取流水号  用于平安银行支付功能
    规则是：当前时间的时分秒毫秒17位+随机的三位数（0-999）共20位
    因为在千分之一秒内的并发量相对平台而言忽略不计，所以可以避免并发问题
     */
    public static String getSerialNum() {
        Random rnd = new Random();
        int i = rnd.nextInt(1000);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String dateStr = sdf.format(new Date()) + "000";
        String sn = dateStr.substring(0 , dateStr.length() - String.valueOf(i).length()) + String.valueOf(i);
        return sn;
    }

    /**
     *将userId转为5位的操作员 左对齐 右侧用空格补齐  用于平安银行请求
     * @param userId
     * @return
     */
    public static String exchangeCounterId(Integer userId) {
        String counterId = "     ";
        String userid = String.valueOf(userId);
        if(userid.length() < 6){
            if (userid.length() == 5) {
                counterId = userid;
            } else {
                counterId = String.format("% 5d", userId);
            }
        }
        return counterId;
    }

    /**
     * 判断字符是否是中文
     * @param str
     * @return
     */
    public static boolean isContainChinese(String str) {

        Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
        Matcher m = p.matcher(str);
        if (m.find()) {
            return true;
        }
        return false;
    }

    /**
     * 对公司名字进行隐藏
     * @param companyName
     * @return
     */
    public static String hideCompanyName(String companyName) {
//        if (StrUtil.isNotBlank(companyName)) {
//            if (companyName.length() > 2) {
//                StringBuffer sb = new StringBuffer(companyName.substring(0, 2));
//                for(int i = 0 ; i < (companyName.length() - 2) ; i ++){
//                    sb.append("*");
//                }
//                return sb.toString();
//            } else {
//                return "**";
//            }
//        }
//        return "";
        return CommonUtil.getHiddenStr(companyName, 5);
    }

    /**
     * 隐藏手机号码
     * @param moible
     * @return
     */
    public static String hideMobile(String moible) {
        String hidePhone = "";
        if(StringUtils.isNotBlank(moible) && PatternUtils.isMobile(moible)){
            hidePhone = moible.substring(0 , 3) + "****" + moible.substring(moible.length() - 4);
        }
        return hidePhone;
    }


}
